package com.warningrc.system.data.dao;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

public interface GenericDao<T> {
	/**
	 * 创建新对象
	 * 
	 * @param newInstance
	 * @return
	 */
	Serializable create(T newInstance);

	/**
	 * 根据主键读取对象
	 * 
	 * @param id
	 * @return
	 */
	T read(Serializable id);

	/**
	 * 查询指定数量的对象<br/> 用于分页查询
	 * 
	 * @param start
	 *            对象的起始行号
	 * @param count
	 *            数量
	 * @return
	 */
	List<T> read(int start, int count);

	/**
	 * 查询所有对象
	 * 
	 * @return
	 */
	List<T> readAll();

	/**
	 * 更新对象属性值
	 * 
	 * @param transientObject
	 */
	void update(T transientObject);

	/**
	 * 删除对象
	 * 
	 * @param id
	 */
	void delete(T transientObject);

	/**
	 * 根据HQL查询
	 * 
	 * @param queryString
	 *            HQL查询语句
	 * @return
	 */
	List<T> read(String queryString);

	/**
	 * 根据HQL查询
	 * 
	 * @param queryString
	 *            HQL查询语句
	 * @param param
	 *            HQL查询条件
	 * @return
	 */
	List<T> read(String queryString, Map<String, Object> param);
	/**
	 * 根据HQL查询
	 * 
	 * @param queryString
	 *            HQL查询语句
	 * @param paramName
	 *            HQL查询条件名称
	 * @param paramValue
	 *            HQL查询条件值
	 * @return
	 */
	List<T> read(String queryString,String paramName,Object paramValue);
}
